package com.ruoyi.system.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.cache.HeatFeeTemplateCache;
import com.ruoyi.system.service.ISysBuildingService;
import com.ruoyi.system.service.ISysHousingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.SysHeatFeeTemplateMapper;
import com.ruoyi.system.domain.SysHeatFeeTemplate;
import com.ruoyi.system.service.ISysHeatFeeTemplateService;

/**
 * 热费计算模板Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-08-13
 */
@Service
public class SysHeatFeeTemplateServiceImpl implements ISysHeatFeeTemplateService 
{
    @Autowired
    private SysHeatFeeTemplateMapper sysHeatFeeTemplateMapper;

    @Autowired
    private HeatFeeTemplateCache heatFeeTemplateCache;

    @Autowired
    private ISysHousingService sysHousingService;

    @Autowired
    private ISysBuildingService sysBuildingService;

    /**
     * 查询热费计算模板
     * 
     * @param templateId 热费计算模板主键
     * @return 热费计算模板
     */
    @Override
    public SysHeatFeeTemplate selectSysHeatFeeTemplateByTemplateId(Long templateId)
    {
        return sysHeatFeeTemplateMapper.selectSysHeatFeeTemplateByTemplateId(templateId);
    }

    /**
     * 查询热费计算模板列表
     * 
     * @param sysHeatFeeTemplate 热费计算模板
     * @return 热费计算模板
     */
    @Override
    public List<SysHeatFeeTemplate> selectSysHeatFeeTemplateList(SysHeatFeeTemplate sysHeatFeeTemplate)
    {
        return sysHeatFeeTemplateMapper.selectSysHeatFeeTemplateList(sysHeatFeeTemplate);
    }

    /**
     * 新增热费计算模板
     * 
     * @param sysHeatFeeTemplate 热费计算模板
     * @return 结果
     */
    @Override
    public int insertSysHeatFeeTemplate(SysHeatFeeTemplate sysHeatFeeTemplate)
    {
        sysHeatFeeTemplate.setCreateTime(DateUtils.getNowDate());
        int row = sysHeatFeeTemplateMapper.insertSysHeatFeeTemplate(sysHeatFeeTemplate);
        // 刷新缓存
        heatFeeTemplateCache.refreshHeatFeeTemplate(sysHeatFeeTemplate.getTemplateId());
        return row;
    }

    /**
     * 给小区绑定热费计算模板
     * @param templateId
     * @param housingId
     */
    @Override
    public void bindHeatFeeTemplate(Long templateId, Long housingId) {
        sysBuildingService.bindHeatFeedId(templateId, housingId);
        sysHousingService.bindHeatFeedId(templateId, housingId);
    }

    /**
     * 修改热费计算模板
     * 
     * @param sysHeatFeeTemplate 热费计算模板
     * @return 结果
     */
    @Override
    public int updateSysHeatFeeTemplate(SysHeatFeeTemplate sysHeatFeeTemplate)
    {
        sysHeatFeeTemplate.setUpdateTime(DateUtils.getNowDate());
        int row = sysHeatFeeTemplateMapper.updateSysHeatFeeTemplate(sysHeatFeeTemplate);
        // 刷新缓存
        heatFeeTemplateCache.refreshHeatFeeTemplate(sysHeatFeeTemplate.getTemplateId());
        return row;
    }

    /**
     * 批量删除热费计算模板
     * 
     * @param templateIds 需要删除的热费计算模板主键
     * @return 结果
     */
    @Override
    public int deleteSysHeatFeeTemplateByTemplateIds(Long[] templateIds)
    {
        return sysHeatFeeTemplateMapper.deleteSysHeatFeeTemplateByTemplateIds(templateIds);
    }

    /**
     * 删除热费计算模板信息
     * 
     * @param templateId 热费计算模板主键
     * @return 结果
     */
    @Override
    public int deleteSysHeatFeeTemplateByTemplateId(Long templateId)
    {
        int row = sysHeatFeeTemplateMapper.deleteSysHeatFeeTemplateByTemplateId(templateId);
        sysBuildingService.restHeatFeedId(templateId);
        sysHousingService.restHeatFeedId(templateId);
        return row;
    }
}
